#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//void test()
//{
//	int target[] = { 2,3,4 };
//	int targetSize = sizeof(target) / 4;
//	int sz = 0;
//	int* returnSize = &sz;
//    char** ret = (char**)calloc(sizeof(char*), targetSize * 10);
//    *returnSize = 0;
//    int num = 1;
//    for (int i = 0; i < targetSize; ++i)
//    {
//        if (target[i] == num)
//        {
//            ret[*returnSize] = calloc(1, 5);
//            strcpy(ret[(*returnSize)++], "Push");
//            ++num;
//        }
//        else
//        {
//            while (num < target[i])
//            {
//                ret[*returnSize] = calloc(1, 5);
//                strcpy(ret[(*returnSize)++], "Push");
//                ret[*returnSize] = calloc(1, 5);
//                strcpy(ret[(*returnSize)++], "Pop");
//                ++num;
//            }
//            ret[*returnSize] = calloc(1, 5);
//            strcpy(ret[(*returnSize)++], "Push");
//            ++num;
//        }
//    }                                       
//    free(ret);
//}

void reverse(int* num, int numSize)
{
    for (int i = 0; i < numSize / 2; ++i)
    {
        int tmp = num[i];
        num[i] = num[numSize - i - 1];
        num[numSize - i - 1] = tmp;
    }
}
void test()
{
	int num[] = { 0 };
	int k = 86;
	int numSize = sizeof(num) / 4;
    reverse(num, numSize);
    int* ans = (int*)calloc(10001, 4);
    int carry = 0;
    int i = 0;
    for (i = 0; i < numSize || carry>0; k /= 10, ++i)
    {
        ans[i] = k % 10;
        int n1 = i < numSize ? num[i] : 0;
        int n2 = ans[i] == 0 ? 0 : ans[i];

        int sum = n1 + n2 + carry;

        ans[i] = sum % 10;

        carry = sum / 10;
    }
    if (ans[i])
    {
        ++i;
    }
    reverse(ans, i);
}

int main()
{
	test();
	return 0;
}